home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / qlib205.zip / QLIB.ZIP / INC / TEXT.ASM < prev    next >
Assembly Source File  |  1996-05-06  |  3KB  |  207 lines

  1. ;text boxes,bars etc.
  2.  
  3. .code
  4. ; esi=y*160+x*2 + 0b8000h
  5. ; destroys ax,ebx,esi
  6. ; cx=x dx=y
  7. calc macro
  8.   mov ax,160
  9.   push dx
  10.   mul dx   ;destroy ax,dx
  11.   pop dx
  12.   mov bx,cx
  13.   shl bx,1
  14.   add ax,bx
  15.   movzx esi,ax
  16.   add esi,0b8000h
  17. endm
  18.  
  19. backfill proc,x:word,xl:word,y:word,yl:word
  20.   mov ax,xl
  21.   add ax,x
  22.   mov xl,ax
  23.   mov ax,yl
  24.   add ax,y
  25.   mov yl,ax
  26.  
  27.   mov dx,y
  28. f1:  ;for loop 1
  29.   mov cx,x
  30.   calc
  31. f2:
  32.   mov gs:byte ptr[esi],'░'
  33.   inc si
  34.   mov gs:byte ptr[esi],113
  35.   inc si
  36.   inc cx
  37.   cmp cx,xl
  38.   jb f2
  39.   inc dx
  40.   cmp dx,yl
  41.   jb f1
  42.   ret
  43. backfill endp
  44.  
  45. box proc,x:word,xl:word,y:word,yl:word
  46.   mov ax,xl
  47.   add ax,x
  48.   mov xl,ax
  49.   mov ax,yl
  50.   add ax,y
  51.   mov yl,ax
  52.  
  53.   mov dx,y  ;dx
  54. f1:  ;for loop 1
  55.   mov cx,x  ;cx
  56.   calc
  57. f2:
  58.   mov gs:byte ptr[esi],' '
  59.   inc si
  60.   mov gs:byte ptr[esi],23
  61.   inc si
  62.   inc cx
  63.   cmp cx,xl
  64.   jb f2
  65.   inc dx
  66.   cmp dx,yl
  67.   jb f1
  68.   ret
  69. box endp
  70.  
  71. box1 proc x:word,xl:word,y:word,yl:word
  72.   local wid:word
  73.  
  74.   mov ax,xl
  75.   mov wid,ax
  76.   dec wid
  77.   shl wid,1
  78.   add ax,x
  79.   dec ax
  80.   mov xl,ax
  81.  
  82.   mov ax,yl
  83.   add ax,y
  84.   dec ax
  85.   mov yl,ax
  86.  
  87.   mov cx,x
  88.   mov dx,y
  89.   calc
  90.   mov gs:byte ptr[esi],'┌'
  91.   inc cx
  92.   add si,2
  93.  
  94. @@:
  95.   mov gs:byte ptr[esi],'─'
  96.   inc cx
  97.   add si,2
  98.   cmp cx,xl
  99.   jb @b
  100.   
  101.   mov gs:byte ptr[esi],'┐'
  102.   inc dx
  103.   
  104.   mov cx,x
  105.  
  106. @@:
  107.   calc
  108.   mov gs:byte ptr[esi],'│'
  109.   add si,wid
  110.   mov gs:byte ptr[esi],'│'
  111.   inc dx
  112.   cmp dx,yl
  113.   jb @b
  114.   
  115.   calc
  116.   mov gs:byte ptr[esi],'└'
  117.   add si,2
  118.   inc cx
  119. @@:  
  120.   mov gs:byte ptr[esi],'─'
  121.   inc cx
  122.   add si,2
  123.   cmp cx,xl
  124.   jb @b
  125.   
  126.   mov gs:byte ptr[esi],'┘'
  127.   ret
  128. box1 endp
  129.  
  130. box2 proc x:word,xl:word,y:word,yl:word
  131.   local wid:word
  132.  
  133.   mov ax,xl
  134.   mov wid,ax
  135.   dec wid
  136.   shl wid,1
  137.   add ax,x
  138.   dec ax
  139.   mov xl,ax
  140.  
  141.   mov ax,yl
  142.   add ax,y
  143.   dec ax
  144.   mov yl,ax
  145.  
  146.   mov cx,x
  147.   mov dx,y
  148.   calc
  149.   mov gs:byte ptr[esi],'╔' 
  150.   inc cx
  151.   add si,2
  152.  
  153. @@:
  154.   mov gs:byte ptr[esi],'═'
  155.   inc cx
  156.   add si,2
  157.   cmp cx,xl
  158.   jb @b
  159.   
  160.   mov gs:byte ptr[esi],'╗'
  161.   inc dx
  162.  
  163.   mov cx,x
  164. @@:  
  165.   calc
  166.   mov gs:byte ptr[esi],'║'
  167.   add si,wid
  168.   mov gs:byte ptr[esi],'║'
  169.   inc dx
  170.   cmp dx,yl
  171.   jb @b
  172.   
  173.   mov cx,x
  174.   calc
  175.   mov gs:byte ptr[esi],'╚'
  176.   add si,2
  177.   inc cx
  178. @@:  
  179.   mov gs:byte ptr[esi],'═'
  180.   inc cx
  181.   add si,2
  182.   cmp cx,xl
  183.   jb @b
  184.   
  185.   mov gs:byte ptr[esi],'╝'
  186.   ret
  187. box2 endp
  188.  
  189. bar proc x:word,y:word,xl:word,col:word
  190.   mov cx,x
  191.   mov dx,y
  192.   calc
  193.   inc esi
  194.   mov al,byte ptr[col]
  195.   shl al,4
  196.   add al,7
  197.   xor cx,cx
  198. @@:
  199.   mov gs:[esi],al
  200.   add si,2
  201.   inc cx
  202.   cmp cx,xl
  203.   jb @b
  204.   ret
  205. bar endp
  206.  
  207.